#ifndef PLAYER_H
#define PLAYER_H

#include <Ogre.h>
#include "NxOgre.h"
#include "NxOgreCharacterController.h"
#include "NxOgreCharacterControllerDescription.h"

class Player
{
public:
    static const Ogre::String PLAYER_MESH;
    static const Ogre::String PLAYER_MODEL;
    static const Ogre::String PLAYER_NODE;
    static const Ogre::String HEAD_NODE;
    static const Ogre::String CAM_NODE;
    static const float CAM_ROTATION_SPEED;
    static const Ogre::String PLAYER_CAMERA;

    Player(Ogre::Vector3 _startPosition);
    ~Player();

    void move(Ogre::Real _timeSinceLastFrame);
    void rotateCam();
	void jump();

    //GET
    Ogre::Vector3 getDirection() const;
    Ogre::Vector2 getCamRotation() const;
    float getSpeed() const;
	float getJumpPower() const;
	Ogre::String getTagModel() const;
	NxOgre::CharacterController* getController() const;

    //SET
    void setDirection(const Ogre::Vector3& _direction);
    void setCamRotation(const Ogre::Vector2& _camRotation);
    void setSpeed(const float _speed);
	void setJumpPower(const float _jumpPower);
    void setTagModel(const Ogre::String& _tagModel);
	void setController(NxOgre::CharacterController* _controller);
private:
    Ogre::String tagModel;

    float speed;
	float jumpPower;
    Ogre::Vector3 direction;
    Ogre::Vector2 camRotation;
	NxOgre::CharacterController* controller;

};

#endif